﻿Imports System.IO
Imports DevComponents.DotNetBar
Imports System.Data.OleDb

Public Class ucDangnhap

    '#Region "Variables"
    '    Private cnnDB As OleDbConnection
    '    Private bolAuthentication As Boolean = False
    '    Private bolChangpw As Boolean = False
    '    Private clFunction As New clCommon
    '#End Region

    Private userBUS As New UserBUS()

    Public Sub New()

        ' This call is required by the designer.
        InitializeComponent()

        ' Add any initialization after the InitializeComponent() call.
        'TextBoxXTendangnhap.Focus()
        TextBoxXTendangnhap.Text = mdRegistry.GetValue_Username()
    End Sub

    Private Function ValidationData() As Boolean
        Dim validation As Boolean = True
        If TextBoxXTendangnhap.Text = "" Then
            ErrorProvider1.SetError(TextBoxXTendangnhap, "Vui lòng nhập tên đăng nhập")
            Highlighter1.SetHighlightColor(TextBoxXTendangnhap, DevComponents.DotNetBar.Validator.eHighlightColor.Red)
            validation = False
        Else
            ErrorProvider1.SetError(TextBoxXTendangnhap, "")
            Highlighter1.SetHighlightColor(TextBoxXTendangnhap, DevComponents.DotNetBar.Validator.eHighlightColor.None)
        End If
        If TextBoxXMatkhau.Text = "" Then
            ErrorProvider1.SetError(TextBoxXMatkhau, "Vui lòng nhập tên đăng nhập")
            Highlighter1.SetHighlightColor(TextBoxXMatkhau, DevComponents.DotNetBar.Validator.eHighlightColor.Red)
            validation = False
        Else
            ErrorProvider1.SetError(TextBoxXMatkhau, "")
            Highlighter1.SetHighlightColor(TextBoxXMatkhau, DevComponents.DotNetBar.Validator.eHighlightColor.None)
        End If
        Return validation
    End Function

    Private Sub CheckLogon()
        Dim myCommand As New OleDbCommand
        Dim da As New OleDbDataAdapter
        Dim ds As New DataSet
        Try
            objConnectionDAO.ExecuteNoneQuery("SET DATEFORMAT MDY")
            ds = userBUS.GetUserByUserName(TextBoxXTendangnhap.Text)

            If ds.Tables(0).Rows.Count > 0 Then
                With ds.Tables(0).Rows(0)
                    If Trim(TextBoxXMatkhau.Text) = mdQuanLyBanHang.StringDecode(.Item("Password")) Then
                        If .Item("StatusFlag") = True Then
                            'bolAuthentication = True

                            If .Item("PrivilegeName") = "Administrator" Then
                                objUser.Administrator = True
                            Else
                                objUser.Administrator = False
                            End If
                            objUser.UserFullName = .Item("FullName")
                            objUser.UserAccountID = .Item("UserAccountID")
                            objUser.UserName = Trim(TextBoxXTendangnhap.Text)
                            objUser.Privilege = .Item("PrivilegeID")
                            objUser.NonFlag = .Item("NoneFlag")
                            objUser.ReadonlyFlag = .Item("ReadOnlyFlag")
                            objUser.FullFlag = .Item("FullFlag")
                            objUser.CashBookFlag = .Item("CashBookFlag")
                            objUser.PasswordChgAtLogonFlag = .Item("PasswordChgAtLogonFlag")
                            objUser.CannotChgPasswordFlag = .Item("CannotChgPasswordFlag")
                            objUser.StatusFlag = .Item("StatusFlag")
                            objUser.EmailAddress = .Item("EmailAddress")
                            objUser.PhoneNumber = .Item("PhoneNumber")





                            mdRegistry.SetKeyUserName(TextBoxXTendangnhap.Text)

                            Dim dateExport As Date

                            Select Case eDateTimeFormatType
                                Case mdQuanLyBanHang.DateTimeFormatType.DMY
                                    dateExport = Format(DateAdd(DateInterval.Year, -1, Now), "dd/MM/yyyy")
                                Case mdQuanLyBanHang.DateTimeFormatType.MDY
                                    dateExport = Format(DateAdd(DateInterval.Year, -1, Now), "MM/dd/yyyy")
                                Case mdQuanLyBanHang.DateTimeFormatType.YDM
                                    dateExport = Format(DateAdd(DateInterval.Year, -1, Now), "yyyy/dd/MM")
                                Case mdQuanLyBanHang.DateTimeFormatType.YMD
                                    dateExport = Format(DateAdd(DateInterval.Year, -1, Now), "yyyy/MM/dd")
                            End Select

                            Dim exportBUS As New ExportItemsBUS()
                            exportBUS.ExportItems_Delete_Forever(dateExport)

                            Dim _itemBUS As New ItemsBUS()
                            _itemBUS.Items_RefreshQuantity()

                            If .Item("PasswordChgAtLogonFlag") = True Then

                            End If

                        ElseIf .Item("StatusFlag") = False Then
                            'bolAuthentication = False
                            MsgBox("Tài khoản của bạn đã bị khóa. Xin vui lòng thông báo với Người quản trị để bạn có thể đăng nhập lại", MsgBoxStyle.Critical, "Tài khoản")
                        End If

                    Else
                        'bolAuthentication = False
                        MsgBox("Tên truy cập hoặc mật khẩu không hợp lệ", MsgBoxStyle.Critical, "Lỗi đăng nhập")
                    End If
                End With
            Else
                'bolAuthentication = False
                MsgBox("Tên truy cập hoặc mật khẩu không hợp lệ", MsgBoxStyle.Critical, "Lỗi đăng nhập")
            End If
        Catch ex As Exception
            Dim s As String = ex.Message

            If s.IndexOf("SQL Server does not exist or access denied") <> -1 Or s.IndexOf("Timeout expired") <> -1 Then
                MsgBox("Không thể truy cập đến máy chủ", MsgBoxStyle.Critical)
            Else
                objErrorLog.SaveError(ex.Message, "Logon", "CheckLogon", TextBoxXTendangnhap.Text)
                'SendError(ex)
            End If
        Finally
            'If cnnDB.State = ConnectionState.Open Then cnnDB.Close()
        End Try
        'Me.ParentForm.Close()
    End Sub


    Private Sub TextBoxXTendangnhap_KeyDown(sender As Object, e As KeyEventArgs) Handles TextBoxXTendangnhap.KeyDown
        If e.KeyCode = Keys.Enter Then
            TextBoxXMatkhau.Focus()
        End If
    End Sub

    Private Sub TextBoxXMatkhau_KeyDown(sender As Object, e As KeyEventArgs) Handles TextBoxXMatkhau.KeyDown
        If e.KeyCode = Keys.Enter Then
            ButtonItemDangnhap.Focus()
            If ValidationData() Then
                CheckLogon()
            End If
        End If
    End Sub

    Private Sub ButtonItemDangnhap_Click(sender As Object, e As EventArgs) Handles ButtonItemDangnhap.Click
        mdQuanLyBanHang.InitQuanLyBanHang()
        If ValidationData() Then
            CheckLogon()
        End If
        Main.CloseModalPanel(Me, DevComponents.DotNetBar.Controls.eSlideSide.Right)
    End Sub
End Class
